Data storage systems are arrangements of hardware and software that include storage processors coupled to arrays of non-volatile storage devices, such as magnetic disk drives, electronic flash drives, and/or optical drives, for example. The storage processors service storage requests, arriving from host machines (“hosts”), which specify files or other data elements to be written, read, created, deleted, and so forth. Software running on the storage processors manages incoming storage requests and performs various data processing tasks to organize and secure the data elements stored on the non-volatile storage devices.
Some data storage systems allow developers or other users to create read-write versions of production data objects for testing, debugging, and/or simulation. For example, an engineer may create a thin clone of a production LUN (Logical UNit) and may use the thin clone to try out new software or to test various scenarios. As is known, a “thin clone” is a read-write, point-in-time version of a thinly-provisioned LUN or other block-addressable object. Thin clones are distinct objects that initially share underlying data blocks with their parent objects but may diverge over time as new writes arrive. Thin clones may be arranged in a hierarchy. For example, one may create a child thin clone from a snapshot of a parent thin clone.
U.S. Pat. No. 8,051,324 describes a QoS (Quality of Service) application that enables certain classes of I/O requests to be limited in accordance with performance goals. Each I/O class is a logical grouping of I/O requests as received by a data storage system and may be defined in accordance with one or more attributes.